import {ElButton} from "element-plus";
import {Component, HTMLAttributes} from "vue";

/**
 * 表格操作栏项
 */
export interface HandlerItem<R> {
    /**
     * 按钮名称
     */
    label?: string;
    /**
     * 按钮图标
     */
    icon?: string;
    /**
     * 按钮属性，详见{@link ElButton}
     */
    props?: object;
    /**
     * 原生属性，详见{@link HTMLAttributes}
     */
    attrs?: HTMLAttributes;
    /**
     * 点击触发内置事件，默认"edit"，弹出编辑表单
     */
    event?: "edit" | "add" | "view";
    /**
     * 自定义渲染函数
     * @param row 当前行
     * @param disabled 禁用标识
     */
    render?: (row: R, disabled?: boolean) => Component;
    /**
     * 自定义响应点击事件，将会覆盖event参数
     * @param row
     */
    click?: (row: R) => void;
    /**
     * 权限标识
     */
    permission?: string;
}
